The present invention relates generally to data transmission and more particularly to extracting data from an oversampled data stream.
It is often necessary for a circuit, such as a programmable logic device (PLD), to transfer data to another circuit. During transmission the data stream may be oversampled because, for example, the circuits and/or interfaces may operate at different frequencies or simply to provide for an accurate transmission. Difficulties in the transmission are exacerbated by these many different applications in which a PLD may be used. For example, a data stream received by a particular type of PLD may come from or through a variety of sources, each related to a different application.
A difficulty is the extraction, and thus reproduction, of the data transmitted from the oversampled data stream. One problem in the extraction is that the phase and duty cycle of the oversampled data stream may not be known. Thus, the oversampled data stream requires analysis to determine a proper continuing alignment for the extraction. The alignment can be difficult in the real world as a data stream is an analog representation of discrete values, and the analog signal may exhibit noise or jitter. Even though some current techniques correct for some misalignment errors, noise or jitter errors persist and may be introduced into the extracted data, particularly with very noisy and jittery signals.
Furthermore, as serial protocols become more popular, more circuit designs need to offer solutions supporting various generations of speed. That demand has fueled the usage of dynamic switching among channels and/or different oversampling ratios, each of which may have differing amounts of noise and jitter depending on the application. The environment of each application may also involve, for example, different voltage supply offsets and temperature variations that could cause noise and jitter in the oversampling data stream, which can cause errors in the extraction of data.
Therefore, it is desirable to have methods and systems for extracting data that can tolerate the higher jitter and noise arising from varied applications and environments.